/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package analise;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import revisaosistematica.Extracao;

/**
 *
 * @author claudiane
 */
public class AnaliseRefSelecionada {

    private Map<String, String> refsTotal;

    public AnaliseRefSelecionada() {
        refsTotal = new HashMap<String, String>();
        try {
            System.out.println("Carregando referencias do arquivo /saidas/raking.csv");
            BufferedReader br = new BufferedReader(new FileReader(new File("./saidas/ranking.csv")));
            br.readLine(); // pulando o cabecalho
            String linha = br.readLine();
            while (linha != null) {
                String[] dados = linha.split(";");
                String key = dados[dados.length - 1].toLowerCase().trim();
                refsTotal.put(key, linha);
                linha = br.readLine();
            }
            br.close();
        } catch (Exception ex) {
            Logger.getLogger(AnaliseRefSelecionada.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void analisar() {
        try {
            System.out.println("Realizando analise...");
            BufferedReader br = new BufferedReader(new FileReader(new File("./entradas/refs_selecionadas.csv")));
            br.readLine(); // pulando o cabecalho
            String linha = br.readLine();
            StringBuilder saida = new StringBuilder();
            String dadosRef;
            while (linha != null) {
                String dados = Extracao.getPreProcessaDoc(linha);
                dados = dados.toLowerCase().trim();
                dadosRef = refsTotal.get(dados);
                if (dadosRef != null) {
                    saida.append(dadosRef + "\n");
                }
                linha = br.readLine();
            }

            br.close();
            escreverSaida(saida.toString());
            System.out.println("Analise finalizada...");
        } catch (Exception ex) {
            Logger.getLogger(AnaliseRefSelecionada.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void escreverSaida(String dados) {
        String arquivo = "./saidas/2_analise_refs_selecionadas_e_ranking.csv";
        try {
            String cabecalho = "posicao;numero;rank;titulo\n";
            BufferedWriter bw = new BufferedWriter(new FileWriter(arquivo));
            bw.write(cabecalho);
            bw.write(dados);
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        AnaliseRefSelecionada analise = new AnaliseRefSelecionada();
        analise.analisar();
    }
}
